package com.cskaoyan.javase.oop2.protected3.anotherpackage;

import com.cskaoyan.javase.oop2.protected3.onepackage.CurrentClazz;
import com.cskaoyan.javase.oop2.protected3.onepackage.SamePackageSonClazz;

/**
 * @description: 不同包的子类
 * @author: wuguidong@cskaoyan.onaliyun.com
 **/

/**
 * 默认权限：只要不同包，立刻推出不能访问
 * 	2，protected：不同包的(可见)子类均可见，一部分可以访问到，一部分不行
 * 	在子类当中，可以创建父类对象，也可以创建自身子类对象，甚至你还可以创建别的子类对象，这三种形式肯定有的能访问，有的不能访问
 *
 * 	> 定义上含糊的说了，protected在不同包的子类中可以访问
 * > 但实际上不同包的子类，仍然可以细分
 *
 * - 不同包的子类中，创建父类对象，用父类对象访问protected成员
 *          不能访问
 * - 不同包的子类中，创建自身子类对象，用子类对象访问protected成员
 *          是可以访问从父类中继承来的protected成员
 * - 不同包的子类中，创建该类的其他子类对象，用这个其他子类对象访问protected成员
 *          不可以访问
 *
 *
 *   记忆protected访问权限，就记住一句话：
 *   只要是同包，随便你搞
 *   只要不同包，只有一种情况能够访问：
 *       1，必须在子类当中
 *       2，必须在这个子类当中创建自己的对象
 *
 */
public class OtherPackageSonClazz extends CurrentClazz {
    public static void main(String[] args) {
        //1，创建父类对象
        CurrentClazz cc = new CurrentClazz();
        //System.out.println(cc.name);
        //System.out.println(cc.age);
        //2，创建自身对象
        OtherPackageSonClazz ops = new OtherPackageSonClazz();
        System.out.println(ops.age);
        //3，创建其他子类对象，创建”兄弟“对象
        SamePackageSonClazz spss = new SamePackageSonClazz();
        //System.out.println(spss.age);

    }
}
